অ্যাজাক্স (Ajax)

Form Validation এবং Data Submission

Web Development - অ্যাজাক্স (Ajax) - Ajax এর মাধ্যমে Form Data Submit (Submitting Form Data with Ajax) | NCTB BOOK

Ajax এর মাধ্যমে Form Validation এবং Data Submission করা একটি আধুনিক এবং কার্যকর পদ্ধতি, যা ব্যবহারকারীদের ইনপুট ডেটা সার্ভারে পাঠানোর আগে ভ্যালিডেট করে এবং পেজ রিফ্রেশ ছাড়াই রেসপন্স প্রদান করে। এই পদ্ধতিতে, Ajax এবং PHP এর ইন্টিগ্রেশন ব্যবহার করে ক্লায়েন্ট সাইডে ইনপুট ডেটা যাচাই এবং সার্ভার সাইডে ডেটা প্রক্রিয়া করা যায়। নিচে একটি উদাহরণসহ Ajax এর মাধ্যমে ফর্ম ভ্যালিডেশন এবং ডেটা সাবমিশনের পদ্ধতি আলোচনা করা হয়েছে।

উদাহরণ: Ajax এর মাধ্যমে Form Validation এবং Data Submission

১. HTML এবং JavaScript (index.html):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Ajax Form Validation and Submission</title>
</head>
<body>
    <h1>Ajax Form Validation and Submission</h1>
    <form id="userForm">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name" required>
        <br><br>
        <label for="email">Email:</label>
        <input type="email" id="email" name="email" required>
        <br><br>
        <button type="button" onclick="validateAndSubmit()">Submit</button>
    </form>

    <div id="response-container">
        <!-- রেসপন্স বা ত্রুটি মেসেজ এখানে দেখানো হবে -->
    </div>

    <script>
        function validateAndSubmit() {
            // ফর্ম ইনপুট ভ্যালু গুলো সংগ্রহ করা
            var name = document.getElementById('name').value;
            var email = document.getElementById('email').value;

            // ক্লায়েন্ট সাইড ভ্যালিডেশন
            if (name === "" || email === "") {
                document.getElementById("response-container").innerHTML = "Please fill in all fields.";
                return;
            }

            // ফর্ম ডেটা তৈরি করা
            var formData = new FormData();
            formData.append("name", name);
            formData.append("email", email);

            // XMLHttpRequest অবজেক্ট তৈরি করা
            var xhr = new XMLHttpRequest();

            // POST রিকোয়েস্ট ওপেন করা
            xhr.open("POST", "validate_and_submit.php", true);

            // রেসপন্স হ্যান্ডলিং সেট করা
            xhr.onreadystatechange = function() {
                if (xhr.readyState === 4 && xhr.status === 200) {
                    document.getElementById("response-container").innerHTML = xhr.responseText;
                } else if (xhr.readyState === 4) {
                    // যদি এরর হয়, তাহলে এরর মেসেজ দেখানো
                    document.getElementById("response-container").innerHTML = "Error submitting the form!";
                }
            };

            // রিকোয়েস্ট পাঠানো
            xhr.send(formData);
        }
    </script>
</body>
</html>

বিস্তারিত ব্যাখ্যা:

  • HTML ফাইলে একটি ফর্ম (<form>) তৈরি করা হয়েছে যেখানে নাম এবং ইমেইল ইনপুট ফিল্ড রয়েছে।
  • "Submit" বোতামে ক্লিক করলে validateAndSubmit() ফাংশন কল হবে, যা ইনপুট ফিল্ডগুলো ভ্যালিডেট করে Ajax এর মাধ্যমে ফর্ম ডেটা সাবমিট করবে।
  • response-container নামে একটি <div> এলিমেন্ট রয়েছে, যেখানে PHP স্ক্রিপ্ট থেকে প্রাপ্ত রেসপন্স বা ত্রুটি মেসেজ দেখানো হবে।

২. PHP স্ক্রিপ্ট (validate_and_submit.php):

<?php
// ফর্ম থেকে ডেটা সংগ্রহ করা
$name = trim($_POST['name']);
$email = trim($_POST['email']);

// ভ্যালিডেশন চেক করা
if (empty($name) || empty($email)) {
    echo "Both fields are required.";
    exit();
}

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "Invalid email format.";
    exit();
}

// ডাটাবেস কানেকশন সেটআপ
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";

$conn = new mysqli($servername, $username, $password, $dbname);

// কানেকশন চেক করা
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// SQL কুয়েরি তৈরি করা
$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);

if ($stmt->execute()) {
    echo "User data submitted successfully!";
} else {
    echo "Error: " . $stmt->error;
}

// কানেকশন এবং স্টেটমেন্ট বন্ধ করা
$stmt->close();
$conn->close();
?>

বিস্তারিত ব্যাখ্যা:

  1. ডেটা সংগ্রহ এবং ভ্যালিডেশন:
    • PHP স্ক্রিপ্টে $_POST ব্যবহার করে ফর্ম ডেটা সংগ্রহ করা হয়েছে এবং ট্রিম করে পরিষ্কার করা হয়েছে।
    • ফর্ম ভ্যালিডেশন চেক করা হয়েছে: যদি ইনপুট ফিল্ড ফাঁকা থাকে বা ইমেইল ভ্যালিড না হয়, তাহলে একটি এরর মেসেজ রিটার্ন করা হয়েছে।
  2. ডাটাবেস কানেকশন:
    • PHP স্ক্রিপ্টে ডাটাবেস কানেকশন সেটআপ করা হয়েছে এবং ডাটাবেসে ইউজারের তথ্য ইনসার্ট করার জন্য INSERT INTO কুয়েরি ব্যবহার করা হয়েছে।
  3. রেসপন্স তৈরি করা:
    • সফল হলে একটি মেসেজ রিটার্ন করা হয়েছে ("User data submitted successfully!")।
    • যদি কোনো ত্রুটি হয়, তাহলে ত্রুটি মেসেজ রিটার্ন করা হয়েছে।

ডাটাবেস সেটআপ:

ডাটাবেসের নাম test_db এবং টেবিলের নাম users। টেবিলের একটি সিম্পল স্ট্রাকচার:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL
);

প্রোগ্রামটি কিভাবে কাজ করে:

  1. HTML এবং JavaScript:
    • ব্যবহারকারী ফর্ম পূরণ করে এবং "Submit" বোতামে ক্লিক করে। এরপর validateAndSubmit() ফাংশন কল হয়।
    • ফাংশনটি ইনপুট ডেটা ভ্যালিডেট করে এবং Ajax POST রিকোয়েস্ট পাঠায় validate_and_submit.php এ।
  2. PHP স্ক্রিপ্ট:
    • PHP স্ক্রিপ্ট ইনপুট ডেটা ভ্যালিডেট করে এবং তা ডাটাবেসে সংরক্ষণ করে। সফল হলে একটি মেসেজ রিটার্ন করে।
  3. JavaScript Response Handling:
    • Ajax রিকোয়েস্ট সফল হলে, PHP স্ক্রিপ্ট থেকে প্রাপ্ত রেসপন্স response-container ডিভে ইনজেক্ট করা হয়।

Error Management:

  • Ajax রিকোয়েস্টে ত্রুটি হ্যান্ডলিং:
    • xhr.onreadystatechange এ চেক করা হয়েছে যে রিকোয়েস্ট সফল হয়েছে কিনা (xhr.status === 200)।
    • যদি রিকোয়েস্ট ব্যর্থ হয়, তাহলে একটি কাস্টম এরর মেসেজ দেখানো হয়েছে।
  • PHP স্ক্রিপ্টে ত্রুটি হ্যান্ডলিং:
    • ইনপুট ডেটা ভ্যালিডেশন এবং ডাটাবেস ইনসার্ট করার সময় PHP ত্রুটি হ্যান্ডলিং করা হয়েছে এবং উপযুক্ত মেসেজ রিটার্ন করা হয়েছে।

Ajax এবং PHP এর মাধ্যমে Form Validation এবং Data Submission এর সুবিধা:

  • ক্লায়েন্ট এবং সার্ভার সাইড ভ্যালিডেশন: ফর্ম ডেটা ইনপুট ক্লায়েন্ট সাইডে যাচাই করা হয়েছে এবং PHP স্ক্রিপ্টের মাধ্যমে সার্ভার সাইডেও যাচাই করা হয়েছে।
  • পেজ রিফ্রেশ ছাড়াই সাবমিশন: Ajax ব্যবহার করে পেজ রিফ্রেশ ছাড়াই ফর্ম সাবমিশন এবং রেসপন্স দেখানো হয়েছে।
  • ডায়নামিক রেসপন্স: ফর্ম সফলভাবে সাবমিট হলে রিয়েল-টাইমে রেসপন্স পাওয়া গেছে এবং তা UI এ দেখানো হয়েছে।

সারসংক্ষেপ:

  • Ajax এবং PHP: Ajax এবং PHP এর মাধ্যমে HTML ফর্ম ডেটা প্রক্রিয়াকরণ এবং ভ্যালিডেশন করা হয়েছে, যা ওয়েব অ্যাপ্লিকেশনকে আরও ইন্টারেক্টিভ এবং ইউজার-ফ্রেন্ডলি করে তোলে।
  • JavaScript এবং PHP: JavaScript এর মাধ্যমে Ajax POST রিকোয়েস্ট পাঠানো হয়েছে এবং PHP স্ক্রিপ্ট ইনপুট ডেটা প্রক্রিয়া করেছে।
  • Error Management এবং Validation: ফর্ম ইনপুট যাচাই এবং ত্রুটি হ্যান্ডলিং করে ফর্ম প্রক্রিয়াকরণকে আরও নিরাপদ এবং নির্ভরযোগ্য করা হয়েছে।

আরও দেখুন...

Promotion